home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 1
/
Amiga Tools.iso
/
wb-tools
/
toolmanager
/
source
/
library
/
toolmanagerlib.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-06-06
|
8KB
|
246 lines
/*
* ToolManagerLib.h V2.1
*
* shared library main include file
*
* (c) 1990-1993 Stefan Becker
*/
/* System include files */
#include <exec/types.h>
#include <exec/libraries.h>
#include <exec/memory.h>
#include <dos/dos.h>
#include <dos/dostags.h>
#include <devices/timer.h>
#include <envoy/nipc.h>
#include <envoy/errors.h>
#include <graphics/gfxmacros.h>
#include <intuition/intuitionbase.h>
#include <libraries/iffparse.h>
#include <libraries/locale.h>
#include <libraries/toolmanager.h>
#include <prefs/prefhdr.h>
#include <rexx/errors.h>
#include <workbench/workbench.h>
/* System function prototypes */
#include <clib/alib_protos.h>
#include <clib/commodities_protos.h>
#include <clib/diskfont_protos.h>
#include <clib/dos_protos.h>
#include <clib/exec_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/icon_protos.h>
#include <clib/iffparse_protos.h>
#include <clib/intuition_protos.h>
#include <clib/locale_protos.h>
#include <clib/nipc_protos.h>
#include <clib/rexxsyslib_protos.h>
#include <clib/utility_protos.h>
#include <clib/wb_protos.h>
/* System function pragmas */
#include <pragmas/commodities_pragmas.h>
#include <pragmas/diskfont_pragmas.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/gadtools_pragmas.h>
#include <pragmas/graphics_pragmas.h>
#include <pragmas/icon_pragmas.h>
#include <pragmas/iffparse_pragmas.h>
#include <pragmas/intuition_pragmas.h>
#include <pragmas/locale_pragmas.h>
#include <pragmas/nipc_pragmas.h>
#include <pragmas/rexxsyslib_pragmas.h>
#include <pragmas/utility_pragmas.h>
#include <pragmas/wb_pragmas.h>
/* ANSI C include files */
#include <stdlib.h>
#include <string.h>
/* Compiler specific include files */
#include <lists.h> /* GetHead() et al. */
/* Project specific include files */
#include "WBStart.h"
#define CATCOMP_NUMBERS
#define CATCOMP_STRINGS
#include "/locale/toolmanager.h"
#include "/ToolManagerPrefs.h"
/* Library <-> Handler IPC commands */
#define TMIPC_AllocTMHandle 0
#define TMIPC_FreeTMHandle 1
#define TMIPC_CreateTMObject 2
#define TMIPC_DeleteTMObject 3
#define TMIPC_ChangeTMObject 4
/* Image object activation commands */
#define IOC_DEACTIVE 1
#define IOC_ACTIVE 2
#define IOC_FULLANIM 3
#define IOC_CONTANIM 4
/* Menu IDs */
#define MENU_CLOSE 0
#define MENU_QUIT 1
/* Hook function prototype */
typedef ULONG (*HookFuncPtr)(__A0 struct Hook *, __A1 void *, __A2 void *);
/* Data structures */
struct TMHandle {
struct Message tmh_Msg; /* Library <-> Handler IPC */
UBYTE tmh_Command; /* Library <-> Handler IPC */
UBYTE tmh_Type; /* object type */
char *tmh_Object; /* object name */
struct TagItem *tmh_Tags; /* object parameters */
struct List tmh_ObjectLists[TMOBJTYPES];
};
struct TMObject {
struct MinNode tmo_Node;
struct List tmo_Links;
char *tmo_Name;
UBYTE tmo_Type;
UBYTE tmo_Pad;
/* will be extended different for each object type */
};
struct TMLink {
struct MinNode tml_Node;
ULONG tml_Size; /* size of structure */
struct TMObject *tml_Linked; /* linked object */
struct TMObject *tml_LinkedTo; /* obj. is linked to this obj. */
void *tml_Active; /* linked object is active */
/* will be extended different for each object type */
};
struct TMLinkImage { /* a link to an Image object */
struct TMLink tmli_Link;
struct RastPort *tmli_RastPort; /* Draw images here */
UWORD tmli_LeftEdge; /* (x,y) in RastPort */
UWORD tmli_TopEdge;
UWORD tmli_Width; /* Image size */
UWORD tmli_Height;
struct Image *tmli_Normal;
struct Image *tmli_Selected;
};
struct TMTimerReq {
struct timerequest tmtr_Request;
struct TMLink *tmtr_Link;
};
/* Library internal function prototypes */
/* config.c */
void ReadConfig(void);
void FreeConfig(void);
/* dockobj.c */
void HandleIDCMPEvents(void);
/* execobj.c */
BOOL CopyPathList(struct PathList **pla, struct PathList **plc,
struct PathList *oldpl);
void FreePathList(struct PathList *pla);
/* handler.c */
__geta4 void HandlerEntry(void);
/* locale.c */
void GetLocale(void);
void FreeLocale(void);
/* objects.c */
BOOL InternalCreateTMObject(struct TMHandle *handle, char *object, ULONG type,
struct TagItem *tags);
BOOL CallDeleteTMObject(struct TMObject *tmobj);
BOOL InternalDeleteTMObject(struct TMHandle *handle, char *object);
BOOL InternalChangeTMObject(struct TMHandle *handle, char *object,
struct TagItem *tags);
struct TMObject *AllocateTMObject(ULONG size);
struct TMLink *AddLinkTMObject(struct TMHandle *handle, char *object,
ULONG type, struct TMObject *linkedto);
void RemLinkTMObject(struct TMLink *tml);
void DeleteAllLinksTMObject(struct TMObject *tmobj);
void CallActivateTMObject(struct TMLink *tml, void *args);
/* readiff.c */
struct TMImageData *ReadIFFData(char *name);
void FreeIFFData(struct TMImageData *tmid);
/* rexx.c */
BOOL SendARexxCommand(char *command, ULONG len);
/* safety.c */
void SafeDeleteCxObjAll(struct CxObj *cxobj, struct TMLink *tml);
void SafeRemoveAppMenuItem(void *appmenu, struct TMLink *tml);
void SafeRemoveAppIcon(void *appicon, struct TMLink *tml);
void SafeRemoveAppWindow(void *appwin, struct TMLink *tml);
/* tmhandle.c */
BOOL InternalAllocTMHandle(struct TMHandle *handle);
BOOL InternalFreeTMHandle(struct TMHandle *handle);
/* workbench.c */
BOOL GetWorkbench(void);
void FreeWorkbench(void);
/* System library base pointers */
extern struct Library *CxBase;
extern struct Library *DOSBase;
extern struct Library *GadToolsBase;
extern struct Library *GfxBase;
extern struct Library *IFFParseBase;
extern struct IntuitionBase *IntuitionBase;
extern struct Library *NIPCBase;
extern struct Library *SysBase;
extern struct Library *UtilityBase;
extern struct Library *WorkbenchBase;
/* Global data */
extern const struct TagItem HandlerProcessTags[];
extern struct MsgPort *LibraryPort;
extern struct MsgPort *DummyPort;
extern struct MsgPort *IDCMPPort;
extern struct MsgPort *TimerPort;
extern struct MsgPort *AppMsgPort;
extern struct MsgPort *BrokerPort;
extern struct Entity *LocalEntity;
extern struct timerequest *deftimereq;
extern struct TMHandle *PrivateTMHandle;
extern CxObj *Broker;
extern struct PathList *GlobalPath;
extern BOOL Closing;
extern struct NewBroker BrokerData;
extern struct NewMenu DockMenu[];
extern char ToolManagerName[];
extern char PrefsFileName[];
extern char DefaultNoName[];
extern char DefaultDirName[];
extern char DefaultOutput[];
extern char DefaultPortName[];
/* Global defines */
#define TMVERSION "2.1"
#define TMLIBREVISION 0
#define TMCRYEAR "1990-93"
#ifdef DEBUG
__stkargs void kputs(char *);
__stkargs char kgetc(void);
__stkargs void kprintf(char *,...);
#define DEBUG_PUTSTR(a) kputs(a);
#define DEBUG_GETCHR kgetc();
#define DEBUG_PRINTF(a,b) kprintf(a,b);
#else
#define DEBUG_PUTSTR(a)
#define DEBUG_GETCHR
#define DEBUG_PRINTF(a,b)
#endif